﻿namespace ECM7.Themes.Editor
{
	using System;
	using System.Collections.Generic;
	using System.Windows.Forms;
	using ECM7.Themes.Domain.Model.Templates;

	/// <summary>
	/// Форма редактирования параметров темы оформления
	/// </summary>
	public partial class ChooseTemplateForm : Form
	{
		/// <summary>
		/// Доступные шаблоны страниц
		/// </summary>
		private readonly Dictionary<Guid, Template> availableTemplates;

		/// <summary>
		/// Шаблон, выбранный в текущий момент
		/// </summary>
		public Guid SelectedTemplateGuid { get; protected set; }

		/// <summary>
		/// Конструктор
		/// </summary>
		/// <param name="templates">Доступные шаблоны страниц</param>
		public ChooseTemplateForm(Dictionary<Guid, Template> templates)
		{
			InitializeComponent();
			availableTemplates = templates;
		}

		/// <summary>
		/// Кнопка "Отмена"
		/// </summary>
		private void BCancelClick(object sender, EventArgs e)
		{
			DialogResult = DialogResult.Cancel;
			Close();
		}

		/// <summary>
		/// Кнопка "ОК"
		/// </summary>
		private void BOkClick(object sender, EventArgs e)
		{
			DialogResult = DialogResult.OK;
		}

		/// <summary>
		/// Заполнение списка шаблонов при загрузке формы
		/// </summary>
		private void ChooseTemplateFormLoad(object sender, EventArgs e)
		{
			foreach (var template in availableTemplates)
			{
				lbTemplates.Items.Add(template);
			}

			if (availableTemplates.Count > 0)
			{
				lbTemplates.SelectedIndex = 0;
			}
			else
			{
				bOk.Enabled = false;
			}
		}

		/// <summary>
		/// Изменение выбранного шаблона
		/// </summary>
		private void LbTemplatesSelectedIndexChanged(object sender, EventArgs e)
		{
			if (lbTemplates.SelectedItem != null)
			{
				var current = (KeyValuePair<Guid, Template>)lbTemplates.SelectedItem;
				SelectedTemplateGuid = current.Key;
			}
		}
	}
}
